The increasing software complexity results in changes to product cycles, requirements and models for delivering software applications. Changes in customers' needs require flexibility in terms of processes, landscape and software components. Operational costs are high and a lot is spent on maintenance of the existing infrastructural equipment. Traditionally, business customers have to build and maintain their own infrastructure to run on-premise applications. Cloud computing is the delivery of computing resources as a service over a network (e.g., the Internet). By applying the Software-as-a-Service (SaaS) model and offering business applications that are hosted online, the maintenance costs decrease and time is saved. Software vendors can use the cloud environment to quickly deploy existing software solutions. SaaS is a delivery model, where a cloud service provider provides software applications and various hardware and software resources on-demand when requested by an end user (e.g., customer). A customer of on-demand applications is free from the procurement and maintenance of the hardware and software needed for executing the applications.
Platform-as-a-Service (PaaS) is another category of cloud computing solutions that provides the computing platform including operating system, programming language execution environment, database, and web server to facilitate the development and deployment of on-demand applications and services. In PaaS offerings, the customer is responsible for more of the execution environment than in the SaaS model. However, with PaaS offerings the customer has greater control over the application. Applications can run as SaaS on the infrastructure that is used with a PaaS provider. Another level of cloud-computing solution is Infrastructure-as-a-Service (IaaS), in which the service provider offers computing resources in the form of physical or virtual machines, data storage, networks, load balancers, etc. In some cases, the customer provides applications to be executed, possibly along with operating system images and other portions of the execution runtime environment.
Application developers or users of cloud-based applications need access to the underlying infrastructure to perform certain operations. This way, they can have a similar experience to what they have when working with on-premise solutions. Direct access to the underlying infrastructure (e.g. virtual machines (VMs) with operating systems and application servers installed on top of them) in a PaaS environment is usually given to a defined number of users, such as platform operators. Monitoring systems help administrators to identify resource bottlenecks or problems and take the required action. During the development phase, it is a common practice to insert logging statements within the code to produce informative logs at runtime that can be helpful for troubleshooting or for analysis purposes.
Logging is a process of creating and storing permanent records of events for a particular system or software application that can be reviewed, printed, and analyzed. These records can contain short messages, the source of the records, timestamps of the events, log levels specifying the importance of the records, etc. Log messages can include a detailed sequence of statements that describe the events happening during an operation as they are executed. Logger objects have predefined levels that specify the granularity that will be applied when logging messages in the log files. A logging configuration can be defined for a particular software application or component. The logging configuration defines the log levels that will be applied while the software application or component is running Java® logging framework is a logging package for the Java® Platform that defines a couple of log levels for a logger object, e.g., fatal, error, warning, info, debug, trace, others. Based on the log level and the events that occur during the execution of the application, log messages are generated and stored as logged data (e.g. in log files). Log messages can be used not only by application developers, but also by the system administrators that identify problems in system operations. Therefore, it is essential to keep logs during the whole execution of a given software application or a system. To retrieve the logged data for an application deployed on a cloud platform, the underlying cloud infrastructure should be accessed.